// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// VMOptions=--optimization-counter-threshold=10

// Declares foo that returns 42.
import "constraints_lib2.dart" deferred as lib;

import 'package:expect/expect.dart';

bool libLoaded = false;

main() {
  Expect.equals(88, heyhey());

  // Trigger optimization of 'hehey' which inlines 'barbar'.
  for (int i = 0; i < 30000; i++) {
    heyhey();
  }

  lib.loadLibrary().then((_) {
    libLoaded = true;
    Expect.equals(42, heyhey());
  });
}

// Inline bar in optimized code.
heyhey() => barbar();

barbar() {
  if (libLoaded) {
    // Returns 42.
    return lib.foo();
  }
  return 88;
}
